home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj8508.arc / XMSGLF1.C < prev    next >
Text File  |  1986-09-14  |  2KB  |  81 lines

  1. /* xmsglf1.c - Xmodem send using G'Leaf Comm lib */
  2. #include "stdio.h"
  3. #include "gf.h"
  4. #include "asiports.h"
  5.  
  6. #define  CARD  2        /* which RS-232 port to use */
  7.  
  8. char combuf[1150] ;
  9. char obuf[1150] ;
  10. int port = 1 ;
  11.  
  12.  
  13. main(argc,argv)
  14.  int argc ;
  15.  char *argv[] ;
  16.  {
  17.     int c , err , n , t ,speed , lstat , mstat ;
  18.  
  19.     if( argc < 3 )
  20.       { printf(" no file name or baud rate \n");
  21.         exit(5) ;
  22.       }
  23.  
  24.     sscanf(argv[2],"%d",&speed) ;
  25.     err = asisetup(port,ASINOUT,0,combuf,1000,obuf,1000) ;
  26.  printf(" asisetup - err=%d \n",err) ;
  27.     asdtr(port,ON) ;
  28.     err = asiinit(port,speed,0,1,8) ;
  29. printf(" asiinit - err=%d \n",err) ;
  30.     err = asistart(port,ASINOUT) ;
  31. printf(" asistart - err=%d \n",err) ;
  32.     eltime() ;
  33.     err = send_filet(argv[1],&n) ;
  34.     t = eltime() ;
  35.     printf("  %4d Ticks  or %8.2f Secs \n",t,((float) t) / 18.2) ;
  36.     printf("  send_file - err=%d     no recs. xmtted=%d \n",err,n) ;
  37.  
  38.     asiquit(port) ;
  39.  }
  40.  
  41.  
  42. int send_file(fn,pn) 
  43.  char fn[] ;            /* file name */
  44.  int *pn ;            /* put record count here */
  45.  {
  46.     FILE *fd ;
  47.     char buf[140] ;
  48.     int block , ret , nr ;
  49.     struct XMBUF locparms ;
  50.  
  51.     fd = fopen(fn,"rb") ;
  52.     if( fd == NULL )
  53.       { printf(" can't open file \n");
  54.         return(-1) ;
  55.       }
  56.  
  57.     block = 1 ;
  58.     ret = -200 ;
  59.     nr = fread(buf,1,128,fd) ;
  60.     while( nr > 0 )
  61.       { while( nr < 128 )
  62.           { buf[nr] = '\0' ;
  63.             nr ++ ;
  64.           }     
  65.         ret = asixsendbuf(port,buf,block) ;
  66.         if( ret == 0 )
  67.             printf(" block %4d - sent OK \n",block );
  68.         else
  69.           { printf(" block %4d - error %d \n",block,ret);
  70.             break ;
  71.           }
  72.         nr = fread(buf,1,128,fd) ;
  73.         block++ ;
  74.       }
  75.     asiputc(port,EOT) ;
  76.     fclose(fd) ;
  77.     *pn = block ; 
  78.     return( ret ) ;
  79.  }
  80. 
  81.